package com.kamistoat.meimeimall.common.dubboInterface;

import com.kamistoat.meimeimall.common.To.memberTo.RegisterMemberTo;
import com.kamistoat.meimeimall.common.utils.R;

/**
 * member模块 Dubbo 接口定义
 */
public interface MemberDubboInterface {
    /**
     * 用户注册RPC
     *
     * @param registerMemberTo RPC间To类
     * @return R对象
     */
    R register(RegisterMemberTo registerMemberTo);

    /**
     * 用户登录RPC
     *
     * @param loginAccount 账号
     * @param password     密码
     * @param IP           IP
     * @param IPAddr       Ip地址
     * @return R对象. 内含 "jwtString" - jwt字符串
     */
    R login(String loginAccount, String password, String IP, String IPAddr);


    /**
     * 用户登出RPC
     *
     * @return R对象.
     */
    R loginout();

    /**
     * 查询用户的所有收货地址RPC
     *
     * @param memberId 用户Id
     * @return R对象 内含 "memberReceiveAddressToList" - List<{@link com.kamistoat.meimeimall.common.To.memberTo.MemberReceiveAddressTo}>
     */
    R getOrderAddress(Long memberId);

    /**
     * 根据收货地址Id查询收货地址
     *
     * @param addrId 地址id
     * @return R对象 内含 "memberAddressTo" - MemberReceiveAddressTo
     */
    R getAddressById(Long addrId);

    /**
     * 根据收货地址Id计算运费
     *
     * @param addrId 地址Id
     * @return R对象 内含 "price" - BigDecimal
     */
    R getFare(Long addrId);
}
